struct _PPM_IDLE_STATES// Size=0x140
{
    unsigned char InterfaceVersion;// Offset=0x0 Size=0x1
    unsigned char ForceIdle;// Offset=0x1 Size=0x1
    unsigned char EstimateIdleDuration;// Offset=0x2 Size=0x1
    unsigned char ExitLatencyTraceEnabled;// Offset=0x3 Size=0x1
    unsigned char NonInterruptibleTransition;// Offset=0x4 Size=0x1
    unsigned char UnaccountedTransition;// Offset=0x5 Size=0x1
    unsigned char IdleDurationLimited;// Offset=0x6 Size=0x1
    unsigned long ExitLatencyCountdown;// Offset=0x8 Size=0x4
    unsigned long TargetState;// Offset=0xc Size=0x4
    unsigned long ActualState;// Offset=0x10 Size=0x4
    unsigned long OldState;// Offset=0x14 Size=0x4
    unsigned long OverrideIndex;// Offset=0x18 Size=0x4
    unsigned long ProcessorIdleCount;// Offset=0x1c Size=0x4
    unsigned long Type;// Offset=0x20 Size=0x4
    unsigned short ReasonFlags;// Offset=0x24 Size=0x2
    unsigned long long InitiateWakeStamp;// Offset=0x28 Size=0x8
    long PreviousStatus;// Offset=0x30 Size=0x4
    unsigned long PreviousCancelReason;// Offset=0x34 Size=0x4
    struct _KAFFINITY_EX PrimaryProcessorMask;// Offset=0x38 Size=0xc
    struct _KAFFINITY_EX SecondaryProcessorMask;// Offset=0x44 Size=0xc
    void  ( * IdlePrepare)(struct _PROCESSOR_IDLE_PREPARE_INFO * );// Offset=0x50 Size=0x4
    long  ( * IdlePreExecute)(void * ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x54 Size=0x4
    long  ( * IdleExecute)(void * ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x58 Size=0x4
    unsigned long  ( * IdlePreselect)(void * ,struct _PROCESSOR_IDLE_CONSTRAINTS * );// Offset=0x5c Size=0x4
    unsigned long  ( * IdleTest)(void * ,unsigned long ,unsigned long );// Offset=0x60 Size=0x4
    unsigned long  ( * IdleAvailabilityCheck)(void * ,unsigned long );// Offset=0x64 Size=0x4
    void  ( * IdleComplete)(void * ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x68 Size=0x4
    void  ( * IdleCancel)(void * ,unsigned long );// Offset=0x6c Size=0x4
    unsigned char  ( * IdleIsHalted)(void * );// Offset=0x70 Size=0x4
    unsigned char  ( * IdleInitiateWake)(void * );// Offset=0x74 Size=0x4
    struct _PROCESSOR_IDLE_PREPARE_INFO PrepareInfo;// Offset=0x78 Size=0x50
    struct _KAFFINITY_EX DeepIdleSnapshot;// Offset=0xc8 Size=0xc
    struct _PERFINFO_PPM_STATE_SELECTION * Tracing;// Offset=0xd4 Size=0x4
    struct _PERFINFO_PPM_STATE_SELECTION * CoordinatedTracing;// Offset=0xd8 Size=0x4
    struct _PPM_SELECTION_MENU ProcessorMenu;// Offset=0xdc Size=0x8
    struct _PPM_SELECTION_MENU CoordinatedMenu;// Offset=0xe4 Size=0x8
    struct _PPM_COORDINATED_SELECTION CoordinatedSelection;// Offset=0xec Size=0x10
    struct _PPM_IDLE_STATE State[1];// Offset=0xfc Size=0x40
};